基于Redis无序集合实现禁止多端登录

应用背景

多个应用端假设名称叫做A和B,禁止用户从A B同时登录,A登录踢B,B登录踢A

实现思路

  • 设置两个无序集合a_set, b_set
  • a b 登录的时候执行
$redis->sAdd('a_set',$user_id);//A登录
$redis->sRem('b_set',$user_id);//踢B
$redis->sAdd('b_set',$user_id);//B登录
$redis->sRem('a_set',$user_id);//踢A
  • api获取数据之前判断该端的id是否在线(AB两个端的api是分开的)
    • A判断
    if($redis->sIsmember('a_set',$user_id)){
       //true 
    }else{
        //false
    }
    • B判断
    if($redis->sIsmember('b_set',$user_id)){
        //true
    }else{
        //false
    }

用到的方法

  1. sadd key_set value 设置值到set中
  2. sismember key_set value 判断值时候存在key_set里面
  3. srem key_set value 移除指定值
  4. smembers key_set 获取所有的value

SmallForest
239 声望12 粉丝

github: